//27.完整版redux第一步：我们想把action独立出去，不在组件中书写，所以在store中创建一个文件夹actions，把dispatch中写的action对象放到独立的actions文件中
//27.完整版redux第二步：又因为不想把action对象中每次需要改变的值写死，所以在actions中，把action对象写成一个函数，返回这个action对象，这样在组件中使用这个action时，就可以进行传值了
//27.完整版redux第三步：因为在reducer中需要获取action对象中的type类型，进行比较，然后根据类型对初始值做不同的处理，所以通常把actions中传递的action对象的type类型放在一个新的文件夹中，store文件夹中的constant文件夹，用来把type类型声明为一个常量，例如export const INCREMENTCOUNT = "incrementCount";然后在actions中设置时就使用这个常量，在reducer中也用这个常量进行比较
import React from 'react'
import store from "../../store/store"
import { incrementAction, decrementAction } from '../../store/actions/countActions';

export default function Count() {
  const {count} =store.getState()


  const incrementHandle = () => {
      store.dispatch(incrementAction(1))
  }

  const decreamentHandle = () => {
    store.dispatch(decrementAction(1))
  }

  const ifOddIncrementHandle = () => {
    if (count % 2 !== 0) {
      store.dispatch(incrementAction(1))
    }
  }

  const waitIncrementHandle = () => {
    setTimeout(() => {
      store.dispatch(incrementAction(1))
    }, 2000)
  }

  

  return (
    <div>
      <h1>我是Count组件 我的值是{count}</h1>
      <div>
        <button onClick={incrementHandle}>累加</button>
        <button onClick={decreamentHandle}>累减</button>
        <button onClick={ifOddIncrementHandle}>如果是奇数再加1</button>
        <button onClick={waitIncrementHandle}>等2s再加1</button>
      </div>

    </div>
  )
}